package guoanmaker.operator.business.service;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;

import guoanmaker.operator.business.model.OperatorActivityEnlist;
import guoanmaker.operator.business.model.OperatorEventDetails;
import guoanmaker.operator.business.model.PayInfo;
import guoanmaker.operator.business.modelnobind.operatorEnlistDetails;

/**
 * @author wanghongwei 
 * @ClassName: OperatorActivityEnlistServiceInterface 
 * @Description: OperatorActivityEnlistServiceInterface
 * @date 2017/8/11
 */
public interface OperatorActivityEnlistServiceInterface {
	/** 
	    * @Title: saveActivityEnlist
	    * @Description: 新增/修改
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	OperatorActivityEnlist saveActivityEnlist(OperatorActivityEnlist operatorActivityEnlist);
	/** 
	    * @Title: getActivityEnlist
	    * @Description: 根据 报名表id/用户id和活动id/ 查询报名表单信息
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	Object getActivityEnlist(String Id);
	/** 
	    * @Title: getFenYeEnlistAll
	    * @Description: 根据userId 查询所有分页报名信息
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	List<operatorEnlistDetails> getFenYeEnlistAll(String userId,Integer page,Integer size);
	/** 
	  * @Title: getFenYeEnlistAll
	  * @Description: 根据userId 查询所有分页报名Count
	  * @param：   
	  * @return OperatorActivityEnlist    
	  * @throws 
	  */
	OperatorActivityEnlist getFenYeEnlistAndCount(String userId,Integer page,Integer size);
	
	/** 
	    * @Title: getActivityEnlist
	    * @Description: 根据 报名信息表id 删除
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	void deleteActivityEnlistById(String id);
	  /** 
	    * @Title: updateActivityEnlistState
	    * @Description: 修改订单状态
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	int updateActivityEnlistState(OperatorActivityEnlist operatorActivityEnlist)throws Exception;
	/** 
	    * @Title: validateActivityEnlistCoupons
	    * @Description: 验证 优惠券
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	int validateActivityEnlistCoupons(OperatorActivityEnlist operatorActivityEnlist);
	/** 
	    * @Title: saveStreamNum
	    * @Description: 添加流水号
	    * @param：   
	    * @return OperatorActivityEnlist    
	    * @throws 
	    */
	int  saveStreamNum(OperatorActivityEnlist operatorActivityEnlist);
	 /** 
	  * @Title:  paymentActivityEnlist
	  * @Description: 发起活动订单支付
	  * @param: paymentActivityEnlist   
	  * @return AjaxJson    
	  * @throws 
	  */
	PayInfo paymentActivityEnlist(String id, String channel, String back_url);
	 /** 
	  * @Title:  updateEnlistPayState
	  * @Description: 活动订单 支付状态变更
	  * @param: updateEnlistPayState   
	  * @return AjaxJson    
	  * @throws 
	  */
	int updateEnlistPayState(String id, String streamNum);
	
	/**
      * @Title:  queryActivityUrl
	  * @Description:活动链接地址查询
	  * @param: queryActivityUrl   
	  * @return AjaxJson    
	  * @throws 
	  */
	OperatorEventDetails  queryActivityUrl(String userId,String activityId);
}
